Java by API > java.awt.datatransfer > Transferable :: 자주 쓰이는 메소드및 API 를 정리합니다.[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

자주 쓰이는 메소드및 API 를 정리합니다.
탭으로 나뉘어져 있는 글입니다.   [1][2]
등록일:2008-03-17 10:32:12 (0%)
작성자:
제목:Java by API > java.awt.datatransfer > Transferable
Transferable:  getTransferData(DataFlavor  flavor)

import  java.awt.BorderLayout;
import  java.awt.Color;
import  java.awt.datatransfer.DataFlavor;
import  java.awt.datatransfer.StringSelection;
import  java.awt.datatransfer.Transferable;
import  java.awt.datatransfer.UnsupportedFlavorException;
import  java.awt.dnd.DnDConstants;
import  java.awt.dnd.DragGestureEvent;
import  java.awt.dnd.DragGestureListener;
import  java.awt.dnd.DragSource;
import  java.awt.dnd.DragSourceContext;
import  java.awt.dnd.DragSourceDragEvent;
import  java.awt.dnd.DragSourceDropEvent;
import  java.awt.dnd.DragSourceEvent;
import  java.awt.dnd.DragSourceListener;
import  java.awt.dnd.DropTarget;
import  java.awt.dnd.DropTargetDragEvent;
import  java.awt.dnd.DropTargetDropEvent;
import  java.awt.dnd.DropTargetEvent;
import  java.awt.dnd.DropTargetListener;
import  java.awt.dnd.InvalidDnDOperationException;
import  java.awt.event.ActionEvent;
import  java.awt.event.ActionListener;

import  javax.swing.JButton;
import  javax.swing.JFrame;
import  javax.swing.JLabel;

public  class  MainClass  extends  JFrame  implements  ActionListener,  DropTargetListener  {
    DragLabel  source  =  new  DragLabel("Drag  and  drop  me  to  the  following  JButton",  JLabel.CENTER);

    JButton  target  =  new  JButton();

    MainClass(String  title)  {
        super(title);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        source.setForeground(Color.red);
        getContentPane().add(source,  BorderLayout.NORTH);

        target.addActionListener(this);
        getContentPane().add(target,  BorderLayout.SOUTH);

        new  DropTarget(target,  DnDConstants.ACTION_COPY_OR_MOVE,  this);

        setSize(205,  100);

        setVisible(true);
    }

    public  void  actionPerformed(ActionEvent  e)  {
        JButton  b  =  (JButton)  e.getSource();
        b.setText("");
        source.setText("Drag  and  drop  me  to  the  following  JButton");
    }

    public  void  dragEnter(DropTargetDragEvent  e)  {
        System.out.println("Entering  drop  target  #1");
    }

    public  void  dragExit(DropTargetEvent  e)  {
        System.out.println("Exiting  drop  target  #1");
    }

    public  void  dragOver(DropTargetDragEvent  e)  {
        System.out.println("Dragging  over  drop  target  #1");
    }

    public  void  drop(DropTargetDropEvent  e)  {
        System.out.println("Dropping");

        try  {
            Transferable  t  =  e.getTransferable();

            if  (e.isDataFlavorSupported(DataFlavor.stringFlavor))  {
                e.acceptDrop(e.getDropAction());

                String  s;
                s  =  (String)  t.getTransferData(DataFlavor.stringFlavor);

                target.setText(s);

                e.dropComplete(true);
            }  else
                e.rejectDrop();
        }  catch  (java.io.IOException  e2)  {
        }  catch  (UnsupportedFlavorException  e2)  {
        }
    }

    public  void  dropActionChanged(DropTargetDragEvent  e)  {
        System.out.println("Drop  action  changed  #1");
    }

    public  static  void  main(String[]  args)  {
        new  MainClass("Drag  and  Drop  Demo");
    }
}

class  DragLabel  extends  JLabel  implements  DragGestureListener,  DragSourceListener  {
    private  DragSource  ds  =  DragSource.getDefaultDragSource();

    public  DragLabel(String  s,  int  alignment)  {
        super(s,  alignment);

        int  action  =  DnDConstants.ACTION_COPY_OR_MOVE;
        ds.createDefaultDragGestureRecognizer(this,  action,  this);
    }

    public  void  dragGestureRecognized(DragGestureEvent  e)  {
        try  {
            Transferable  t  =  new  StringSelection(getText());

            e.startDrag(DragSource.DefaultCopyNoDrop,  t,  this);
        }  catch  (InvalidDnDOperationException  e2)  {
            System.out.println(e2);
        }
    }

    public  void  dragDropEnd(DragSourceDropEvent  e)  {
        System.out.println("Drag  and  drop  end");

        if  (e.getDropSuccess()  ==  false)  {
            System.out.println("unsuccessful");
            return;
        }

        int  action  =  e.getDropAction();
        if  ((action  &  DnDConstants.ACTION_MOVE)  !=  0)
            setText("");
    }

    public  void  dragEnter(DragSourceDragEvent  e)  {
        System.out.println("Entering  drop  target  #2");

        DragSourceContext  ctx  =  e.getDragSourceContext();

        int  action  =  e.getDropAction();
        if  ((action  &  DnDConstants.ACTION_COPY)  !=  0)
            ctx.setCursor(DragSource.DefaultCopyDrop);
        else
            ctx.setCursor(DragSource.DefaultCopyNoDrop);
    }

    public  void  dragExit(DragSourceEvent  e)  {
        System.out.println("Exiting  drop  target  #2");
    }

    public  void  dragOver(DragSourceDragEvent  e)  {
        System.out.println("Dragging  over  drop  target  #2");
    }

    public  void  dropActionChanged(DragSourceDragEvent  e)  {
        System.out.println("Drop  action  changed  #2");
    }
}



implements  Transferable

import  java.awt.BorderLayout;
import  java.awt.Image;
import  java.awt.datatransfer.DataFlavor;
import  java.awt.datatransfer.Transferable;
import  java.awt.datatransfer.UnsupportedFlavorException;
import  java.awt.event.MouseAdapter;
import  java.awt.event.MouseEvent;
import  java.awt.event.MouseListener;
import  java.io.IOException;

import  javax.swing.AbstractButton;
import  javax.swing.Icon;
import  javax.swing.ImageIcon;
import  javax.swing.JComponent;
import  javax.swing.JFrame;
import  javax.swing.JLabel;
import  javax.swing.JScrollPane;
import  javax.swing.TransferHandler;

public  class  MainClass  {
    public  static  void  main(String  args[])  {
        JFrame  frame  =  new  JFrame("Drag  Image");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Icon  icon  =  new  ImageIcon("image.jpg");
        JLabel  label  =  new  JLabel(icon);
        label.setTransferHandler(new  ImageSelection());
        MouseListener  listener  =  new  MouseAdapter()  {
            public  void  mousePressed(MouseEvent  me)  {
                JComponent  comp  =  (JComponent)  me.getSource();
                TransferHandler  handler  =  comp.getTransferHandler();
                handler.exportAsDrag(comp,  me,  TransferHandler.COPY);
            }
        };
        label.addMouseListener(listener);
        frame.add(new  JScrollPane(label),  BorderLayout.CENTER);

        frame.setSize(300,  150);
        frame.setVisible(true);
    }
}

class  ImageSelection  extends  TransferHandler  implements  Transferable  {

    private  static  final  DataFlavor  flavors[]  =  {  DataFlavor.imageFlavor  };

    private  Image  image;

    public  int  getSourceActions(JComponent  c)  {
        return  TransferHandler.COPY;
    }

    public  boolean  canImport(JComponent  comp,  DataFlavor  flavor[])  {
        if  (!(comp  instanceof  JLabel)  &&  !(comp  instanceof  AbstractButton))  {
            return  false;
        }
        for  (int  i  =  0,  n  =  flavor.length;  i  <  n;  i++)  {
            for  (int  j  =  0,  m  =  flavors.length;  j  <  m;  j++)  {
                if  (flavor[i].equals(flavors[j]))  {
                    return  true;
                }
            }
        }
        return  false;
    }

    public  Transferable  createTransferable(JComponent  comp)  {
        image  =  null;

        if  (comp  instanceof  JLabel)  {
            JLabel  label  =  (JLabel)  comp;
            Icon  icon  =  label.getIcon();
            if  (icon  instanceof  ImageIcon)  {
                image  =  ((ImageIcon)  icon).getImage();
                return  this;
            }
        }  else  if  (comp  instanceof  AbstractButton)  {
            AbstractButton  button  =  (AbstractButton)  comp;
            Icon  icon  =  button.getIcon();
            if  (icon  instanceof  ImageIcon)  {
                image  =  ((ImageIcon)  icon).getImage();
                return  this;
            }
        }
        return  null;
    }

    public  boolean  importData(JComponent  comp,  Transferable  t)  {
        if  (comp  instanceof  JLabel)  {
            JLabel  label  =  (JLabel)  comp;
            if  (t.isDataFlavorSupported(flavors[0]))  {
                try  {
                    image  =  (Image)  t.getTransferData(flavors[0]);
                    ImageIcon  icon  =  new  ImageIcon(image);
                    label.setIcon(icon);
                    return  true;
                }  catch  (UnsupportedFlavorException  ignored)  {
                }  catch  (IOException  ignored)  {
                }
            }
        }  else  if  (comp  instanceof  AbstractButton)  {
            AbstractButton  button  =  (AbstractButton)  comp;
            if  (t.isDataFlavorSupported(flavors[0]))  {
                try  {
                    image  =  (Image)  t.getTransferData(flavors[0]);
                    ImageIcon  icon  =  new  ImageIcon(image);
                    button.setIcon(icon);
                    return  true;
                }  catch  (UnsupportedFlavorException  ignored)  {
                }  catch  (IOException  ignored)  {
                }
            }
        }
        return  false;
    }

    public  Object  getTransferData(DataFlavor  flavor)  {
        if  (isDataFlavorSupported(flavor))  {
            return  image;
        }
        return  null;
    }

    public  DataFlavor[]  getTransferDataFlavors()  {
        return  flavors;
    }

    public  boolean  isDataFlavorSupported(DataFlavor  flavor)  {
        return  flavors[0].equals(flavor);
    }
}
[본문링크] Java by API > java.awt.datatransfer > Transferable
탭으로 나뉘어져 있는 글입니다.   [1][2]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=2825
작성자
비밀번호

 

SSISOCommunity
탭글
[1][2]
[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.